package com.droid.persistor.mapper;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import com.droid.persistor.dao.Categoria;
import com.droid.persistor.dao.Gasto;
import com.droid.persistor.dao.Usuario;
import com.droid.persistor.jdbc.DatabaseConnection;

public class CategoriaMapper extends DatabaseConnection {

	public void altaCategoria(Categoria ctg) {

		Connection conn = getConnection();
		String sql = "INSERT INTO CATEGORIA VALUES ('droid.sec_categoria.nextval,"
				+ ctg.getNombre();

		try {
			execute(conn, sql);

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			closeStatement();
		}

	}

	public Categoria getCategoria(String nombre) {
		Connection conn = getConnection();
		String sql = "SELECT idcategoria,nombre FROM categorias WHERE nombre= "
				+ "'" + nombre + "'";
		Categoria ctg = new Categoria();
		try {
			rs = getResultSet(conn, sql);
			if (rs.next()) {
				ctg.setIdCategoria(rs.getInt("idcategoria"));
				ctg.setNombre(rs.getString("nombre"));
				
				return ctg;
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			closeStatement();
		}

		return null;

	}	


	public ArrayList<Categoria> getCategorias() {

		try {
			Connection conn = getConnection();
			ArrayList<Categoria> categorias = new ArrayList();

			String sql = "SELECT idcategoria,nombre " +
					"FROM CATEGORIAS c";

			rs = getResultSet(conn, sql);

			if (rs != null) {
				while (rs.next()) {
					Categoria ctg = new Categoria();
					ctg.setIdCategoria(rs.getInt("idcategoria"));
					ctg.setNombre(rs.getString("nombre"));
					categorias.add(ctg);
				}
				rs.close();
				return categorias;
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			closeStatement();
		}

		return null;

	}

	public ArrayList<Categoria> getCategoriasTipoGasto(Number idtipogasto) {

		try {
			Connection conn = getConnection();
			ArrayList<Categoria> categorias = new ArrayList();

			String sql = "SELECT c.idcategoria,c.nombre " +
					"FROM CATEGORIAS c,TIPO_DE_GASTOS t " +
					"WHERE c.idcategoria=t.idcategoria " +
					"and t.idtgasto=" + idtipogasto;

			rs = getResultSet(conn, sql);

			if (rs != null) {
				while (rs.next()) {
					Categoria ctg = new Categoria();
					ctg.setIdCategoria(rs.getInt("idcategoria"));
					ctg.setNombre(rs.getString("nombre"));
					categorias.add(ctg);
				}
				rs.close();
				return categorias;
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			closeStatement();
		}

		return null;

	}
	
}
